
// 注册 路由接口 处理函数 -------------------------------------
function register(req, res) {

    const db = require('../config/db');
    // 时间格式化
    const moment = require('moment');
    const CONFIG = require('../config/config');

    //生成数据
    const params = {
        username: req.body.username,
        password: req.body.password,
        email: req.body.email,
        r_date: moment().format('YYYY-MM-DD')
    }

    //检查用户名是否已存在
    let sqlStr = `select * from member where username=?`;
    db.query(sqlStr, [params.username], (err, rst) => {
        // 判断是否 报错
        if (err) return res.send(CONFIG.FAIL);

        //如果存在该用户
        if (rst.length > 0) return res.send(CONFIG.USER_EXIST);

        //注册用户
        sqlStr = "insert into member set ?";
        db.query(sqlStr, params, (err, rst) => {
            if (err) return res.send(CONFIG.FAIL);

            if (rst.affectedRows === 1) {
                console.log('新增成功啦~~~~');
                // console.log(CONFIG.USER_REGISTER);
                return res.send(CONFIG.SUCCESS);
            }
        });
    });
}

// 登录 路由接口 处理函数 -------------------------------------
function login(req, res) {
    const db = require('../config/db');
    const CONFIG = require('../config/config');
    // 1.获取 用户名 密码
    const params = {
        username: req.body.username,
        password: req.body.password
    };
    // 2.根据用户名查询 用户数据行
    let sqlStr = `select * from member where username='${params.username}'`;
    db.query(sqlStr, (err, rst) => {
        if (err) return res.send(CONFIG.FAIL);
        // 检查 返回的 数组 是否 大于0
        if (rst.length > 0) {
            // 比较 密码 是否 与 提交过来的
            if (rst[0].password == params.password) {
                //导入jwt模块，生成jwt字符串
                const jwt = require('jsonwebtoken');
                // 准备一个 数据对象，用来 生成 加密的 token
                let usrData = { ...rst[0] } // {id,username,password,email,r_date,l_date}
                delete usrData.password // 删除对象中的 password 属性 {id,username,email,r_date,l_date}
                //生成 加密 token
                let tokenStr = jwt.sign(usrData, CONFIG.JWT_SECRET, { expiresIn: CONFIG.JWT_EXPIR });

                //组装 要发送 的 数据对象
                let status = {
                    ...CONFIG.SUCCESS, // 结果 SUCCESS中的属性和值
                    jwt: 'Bearer ' + tokenStr// 添加一个 token 属性
                };

                //返回 数据对象
                return res.send(status);
            } else {
                res.send(CONFIG.USER_PWD_ERROR);
            }

        } else {
            res.send(CONFIG.USER_NOT_EXIST);
        }

    });
}

module.exports = {
    register,
    login
}